package movilmax.sia_corp.action;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import movilmax.sia_corp.model.ListaSs;
import movilmax.sia_corp.model.Listax;
import movilmax.sia_corp.model.Presupuesto;
import movilmax.sia_corp.model.Usuario;
import utilidades.Cadena;
import apli.conectar.Conectar;
import apli.procesos.PWimax;
import basedatos.Fecha;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class RegistroPresupuesto extends ActionSupport {
	private static final long serialVersionUID = 149033172101536399L;
	private Conectar BASE;
	private List<Listax> lst_sucursales;
	private List<Listax> lst_servicios;
	private List<Listax> lst_productos;
	private List<Listax> lst_precios;
	
	private List<ListaSs> tabla_eco;
	private String site;
	private String sucursal;
	private String usuario;
	private String servicio;
	private String producto;
	private String cod_item;
	private String obs;
	private String precio;
	private String instalacion;
	private String cod_presupuesto;
	private String cod_prospecto;
	private String costo_instalacion;
	
    private String status;
    private String fecha_status;
    private String obs_status;
    
	private LinkedList<Presupuesto> lst_presupuestos;
	
	@SuppressWarnings("rawtypes")
	public void validate(){	
		try{
			Cadena C=new Cadena();
			LinkedList lst_pre=C.tokens(this.getPrecio(), ",");
			int ctd_val1=0;
  	    	for(int i=0;i< lst_pre.size();i++){
  	    		if(!lst_pre.get(i).toString().trim().equals("0") && !lst_pre.get(i).toString().trim().equals("0.0") && !lst_pre.get(i).toString().trim().equals("0,0") && !lst_pre.get(i).toString().trim().equals("")  )
  	    			ctd_val1++;
  	    	   float vx=new Cadena().convertirFloat(lst_pre.get(i).toString().replace(",", ".") );
  	    	   if(vx==0.0f){
  	    	 		this.addActionError( "Debe ingresar un monto valido en la fila="+(i+1) );
  					return;
  	    	   }
  	    	}
  	    	if ( ctd_val1==0){	
				this.addActionError( "Debe ingresar los montos para cada servicio/producto" );
				return;
			}
			if ( this.getObs().length() == 0 ){	
				this.addActionError( "Debe ingresar las observaciones" );
				return;
			}
			if(this.getCosto_instalacion().length() == 0){
				this.addActionError( "Debe ingresar el costo de instalacion" );
				return;
			}
			float vx=new Cadena().convertirFloat( this.getCosto_instalacion().replace(",", ".") );
	    	if(vx==0.0f){
	    		    this.addActionError( "Debe ingresar el monto valido para costo de instalacion" );
					return;
	    	}
		}catch(Exception err){
			//this.addActionError( "Error" );	
		}
	} 
    
	@SuppressWarnings("rawtypes")
	public String actualizar() throws Exception {
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    String SQL="";
		    if (USUARIO!=null){	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
		    		Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String cod_prospecto="",razon="",obs="",stx="";
	    			String MPARA ="",MSG_EM="" ;
	    		    float dias=0,meses=0,tt_eqp=0,tt_mat=0,tt_comision=0,instalacion=0,recurrente=0,tt_costo_ini=0;
	    		  
	    		   SQL="select E.prospecto,E.site,p.identificacion +' - '+p.nombres as razon from corp_economic E,prospectos P  Where E.codigo='"+ this.getCod_presupuesto() +"' and E.prospecto=P.codigo ";
	    		   Resultado RCS_=BASE.getBaseDatos().consultar(SQL);
		   	 	   if(RCS_.RP){
		   	 		   cod_prospecto=RCS_.getCadena("prospecto");
		   	 	   	   site=RCS_.getCadena("site");
		   	 	   	   this.setSite(site);
		   	 	       razon=RCS_.getCadena("razon");
		   	 	   }
		   	 	   PWimax pw=new PWimax(BASE.getBaseDatos()); 
		   	 	   Resultado RCS=new  Resultado();
		   	 	   SQL="select E.codigo from corp_economic E Where E.site='"+ this.getSite() +"' ";
	    		   RCS_=BASE.getBaseDatos().consultar(SQL);
	    		   int media=0;
		   	 	   if(RCS_.RP){
		   	 		  do{
			    		  RCS=pw.calcularPresupuesto(RCS_.getCadena("codigo") , 8);
			    		  if(RCS.RP){
			    			  dias=dias+RCS.getFloat("diasr");
			    			  meses=meses+RCS.getFloat("meses");
			    			  tt_eqp=tt_eqp + RCS.getFloat("costo_tranzeo");
			    			  tt_mat=tt_mat + RCS.getFloat("costo_materiales");
			    			  tt_comision=tt_comision + RCS.getFloat("costo_comision");
			    			  instalacion=instalacion + RCS.getFloat("instalacion");
			    			  recurrente=recurrente + RCS.getFloat("recurrente");
			    			  tt_costo_ini= tt_costo_ini+ (( tt_eqp+tt_mat+ tt_comision )-(instalacion+recurrente ));
			    		  } 
			    		  RCS.liberar();
			    		  media++;
		   	 		  }while(RCS_.sigItem());
		   	 	   }
		   	 	   meses= meses/media; 
	    		  
	    		  if(meses<3){
	                	obs="PRESUPUESTO APROBADO X SER STANDAR";
	                	stx="APROBADO";
	                	SQL="INSERT INTO corp_seguimiento_actividades (prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
		    			"VALUES('"+cod_prospecto+"','9','17','"+obs+"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' )";
	                	BASE.getBaseDatos().ejecutar(SQL); 
	                	SQL="INSERT INTO corp_seguimiento_actividades (prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
		    			"VALUES('"+cod_prospecto+"','9','18','"+obs+"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' ) ";
	                	BASE.getBaseDatos().ejecutar(SQL); 
	                	SQL="UPDATE corp_sitesurvey SET stx='PRESUPUESTO APROBADO',fecha_act='"+FECHA+"',hora_act='"+HORA+"',usuario_act='"+USUARIO.getUsuario()+"' where codigo='"+this.getSite()+"' ";
			    	    BASE.getBaseDatos().ejecutar(SQL);
	               }else{
	                	obs="PRESUPUESTO ENVIADO A PRESIDENCIA";
	                	stx="GENERADO";
	                	SQL="INSERT INTO corp_seguimiento_actividades (prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
		    			"VALUES('"+cod_prospecto+"','9','17','"+obs+"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' )";
		    	        BASE.getBaseDatos().ejecutar(SQL); 
		    	        SQL="UPDATE corp_sitesurvey SET stx='ENVIADO A PRESIDENCIA',fecha_act='"+FECHA+"',hora_act='"+HORA+"',usuario_act='"+USUARIO.getUsuario()+"' where codigo='"+this.getSite()+"' ";
			    	    BASE.getBaseDatos().ejecutar(SQL);
	               }
	    		  
		    		SQL = "UPDATE corp_economic set status='"+stx+"',fecha_status='" +FECHA+ "',hora_status='" +HORA+ "',usuario_status='" +USUARIO.getUsuario() + "' where site='"+this.getSite()+"' ";
		    	    BASE.getBaseDatos().ejecutar(SQL);
		    	    
		    	       /***************************ENVIO DE EMAIL A VENDEDOR*************************************/

			    		MPARA="dick@movilmax.com,yenny@movilmax.com,nadeska@movilmax.com";  
		    			MSG_EM = "Se ha generado un nuevo presupuesto con el codigo: "+this.getCod_presupuesto()+" <br/>\n";
		    			MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n";
		    			MSG_EM = MSG_EM + "Site survey : " + this.getSite() + " <br/>\n";
		    			MSG_EM = MSG_EM + "Usuario status: "+USUARIO.getDescripcion() +" <br/> \n";
		    			MSG_EM = MSG_EM + "Fecha status: "+FECHA+" "+HORA+" <br/> \n";
		    			MSG_EM = MSG_EM + "Resumen todas las sucursales<br/>\n";
		    			MSG_EM = MSG_EM + "<table border=0><tr><td>Costos</td><td></td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Equipos</td><td align=right>"+new Cadena().formatearNumero(tt_eqp)+"</td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Materiales</td><td align=right>"+new Cadena().formatearNumero(tt_mat)+"</td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Comision </td><td align=right>"+new Cadena().formatearNumero(tt_comision)+"</td><tr>" ;
		    			MSG_EM = MSG_EM + "</table>";
		    			MSG_EM = MSG_EM + "<table border=0><tr><td>Beneficios</td><td></td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Instalacion</td><td align=right >"+new Cadena().formatearNumero(instalacion)+"</td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Recurrente</td><td align=right >"+new Cadena().formatearNumero(recurrente)+"</td><tr>" ;
		    			MSG_EM = MSG_EM + "</table>";
		    			MSG_EM = MSG_EM + "<table border=0><tr><td>Totales</td><td></td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Costos</td><td align=right >"+new Cadena().formatearNumero(( tt_eqp+tt_mat+ tt_comision ))+"</td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Beneficios</td><td align=right>"+new Cadena().formatearNumero((instalacion+recurrente ) )+"</td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Costo inicial</td><td align=right>"+ new Cadena().formatearNumero( tt_costo_ini ) +"</td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Dias recuperacion</td><td align=right>"+ dias +"</td><tr>" ;
		    			MSG_EM = MSG_EM + "<tr><td>Meses recuperacion</td><td align=right>"+ meses +"</td><tr>" ;
		    			MSG_EM = MSG_EM + "</table>";
		    			SQL="INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','PRESUPUESTO "+stx+" PARA="+razon+"','" + MSG_EM + "' ) ";
		    			BASE.getBaseDatos().ejecutar(SQL);	
	    		       /*******************************************************************************************************************************************************/
		    	     this.addActionMessage(stx);
		    	     BASE.getBaseDatos().cerrarConexion();
		    		 return SUCCESS;	 
		    	}else{
		    	   this.addActionError("No hay conexion al servidor");	
		    	}
		    }else{
 	    	    this.addActionError("La sesion del usuario ha caducado");	
	    	}
		    return ERROR;	 	   	  	
	 }	
	
	
	@SuppressWarnings("rawtypes")
	public String rechazar() throws Exception {
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    String SQL="";
		    if (USUARIO!=null){	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
		    		Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String cod_prospecto="";
			    		 SQL = " SELECT ec.site,u.email as vemail,p.codigo,p.identificacion +' - '+p.nombres as razon, p.telefono, p.telefono_oficina,p.celular,v.descripcion as vendedor"+
			    		 " FROM corp_economic ec, prospectos p, usuarios u, corp_asignaciones a, vendedores v WHERE ec.prospecto = p.codigo "+
			    		 " AND a.prospecto= ec.prospecto AND a.vendedor = v.cod AND v.usuario = u.usuario AND ec.codigo ='"+this.getCod_presupuesto()+"' ";
			    		 Resultado RCS = BASE.getBaseDatos().consultar(SQL);
			    		 if(RCS.RP){
			                	cod_prospecto=RCS.getCadena("codigo");
			                	this.setSite(RCS.getCadena("site"));
				                SQL="INSERT INTO corp_seguimiento_actividades " +
				    			"(prospecto,actividad,detalle,obs,usuario,fecha,hora) "+
				    			"VALUES('"+cod_prospecto+"','9','9996','INSERTAR','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"' )";
				                BASE.getBaseDatos().ejecutar(SQL); 
					    		SQL = "UPDATE corp_economic set status='RECHAZADO',fecha_status='" +FECHA+ "',hora_status='" +HORA+ "',usuario_status='" +USUARIO.getUsuario() + "' where site='" + this.getSite() +  "' ";
					    	    BASE.getBaseDatos().ejecutar(SQL);
					    	    /***************************************************************ENVIO DE EMAIL A VENDEDOR****************************************************************/
			    			    String MPARA =RCS.getCadena("vemail");
				            	String razon=RCS.getCadena("razon");
				            	String telfs=RCS.getCadena("telefono")+" / "+RCS.getCadena("telefono_oficina")+" / "+RCS.getCadena("celular");
				            	String MSG_EM="";
				    			MSG_EM = "Se ha rechazado presupuesto con el codigo: "+this.getCod_presupuesto()+" <br/>\n";
				    			MSG_EM = MSG_EM + "Site survey : " + this.getSite() + " <br/>\n";
				    			MSG_EM = MSG_EM + "Razon social: " + razon + " <br/>\n";
				    			MSG_EM = MSG_EM + "Telefonos: " + telfs +" <br/>\n";
				    			MSG_EM = MSG_EM + "Usuario rechazo: " + USUARIO.getDescripcion() + " <br/>\n";
				    			MSG_EM = MSG_EM + "Fecha status:"+ FECHA+" "+HORA+ "<br/>\n";
				    			SQL="INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','PRESUPUESTO RECHAZADO PROSPECTO="+razon+"','" + MSG_EM + "' ) ";
				    			BASE.getBaseDatos().ejecutar(SQL);		    	
			    		       /*******************************************************************************************************************************************************/
		                }
			    	     this.addActionMessage("Rechazado");
			    	     BASE.getBaseDatos().cerrarConexion();
			    		 return SUCCESS;
		    	}else{
		    	   this.addActionError("No hay conexion al servidor");	
		    	}
		    }else{
	    	    this.addActionError("La sesion del usuario ha caducado");	
	    	}
		    return ERROR;	 	   	  	
	 }	

	@SuppressWarnings("rawtypes")
	public String guardar_economic() throws Exception {
		Map session = ActionContext.getContext().getSession();
	    Usuario USUARIO = (Usuario)session.get("ses_usuario");
	    if (USUARIO!=null){	
	    	BASE= new Conectar();
	    	if(BASE.getMsg().equals("SI")){	
	    		try{
	    			Fecha F=new Fecha();
	    			String FECHA=F.getFecha();
	    			String HORA=F.getHoras();
	    			String SQL="",CABECERA="",cod_economic="",OPE="";
	    			String  MSG_EM="",MPARA=USUARIO.getEmail()+","+USUARIO.getEmail_sup()+",dick@movilmax.com,yenny@movilmax.com";
	    			float costo_servicios =0f;
	    			int i=0;
	    			if(this.getCod_presupuesto().equals("-1")){
    	    		    Cadena C=new Cadena();
	  		    	    String sucant="";
	  		    	    CABECERA="NUEVO PRESUPUESTO REGISTRADO";	
  		    	    	LinkedList lst_suc1=C.tokens(this.getSucursal(),",");
  		    	    	LinkedList lst_serv=C.tokens(this.getServicio(),",");
  		    	    	LinkedList lst_prod=C.tokens(this.getProducto(),",");
  		    	    	LinkedList lst_prec=C.tokens(this.getPrecio(),",");
  		    	    	for(i=0; i<lst_suc1.size();i++){
  		    	    		if(!sucant.equals(lst_suc1.get(i).toString().trim())){
  		    	    			cod_economic=BASE.getBaseDatos().generarCodigo("corp_economic", "codigo");
  		  		    	    	SQL="INSERT INTO corp_economic ( codigo,prospecto,site,fecha,fecha_status,hora,hora_status,obs,obs_status, sucursal, usuario,usuario_status,instalacion) "
  		  		    	    	+"VALUES('"+cod_economic+"','"+ this.getCod_prospecto() +"','"+ this.getSite() +"','"+FECHA+"','"+FECHA+"','"+HORA+"','"+HORA+"','"+this.getObs()+"','"+this.getObs()+"','"+lst_suc1.get(i).toString()+"','"+USUARIO.getUsuario()+"','"+USUARIO.getUsuario()+"', '"+this.getCosto_instalacion().replace(",", ".") +"' ) ";
  		  		    	        BASE.getBaseDatos().ejecutar(SQL);
  		  		    	      // this.addActionMessage(SQL);
	  		  		    	    /**********************ENVIAR CORREO REGISTRO PROSPECTO **********************************/
	  		  			        MSG_EM = CABECERA+"<br/>CODIGO SITE SURVEY = "+ this.getSite() +"<br/>\n";
	  		  					MSG_EM = MSG_EM + "Usuario registro: "+USUARIO.getDescripcion() +" <br/> \n";
	  		  					MSG_EM = MSG_EM + "Observaciones: " + this.getObs() + " <br/>\n";
	  		  					SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','"+CABECERA+"','" + MSG_EM + "' ) ";
	  		  					BASE.getBaseDatos().ejecutar(SQL);
	  		  			       /*************************************FIN DE ENVIO DE CORREO*********************************************************/
	  		  				   this.addActionMessage("Presupuesto registrado correctamente con codigo="+cod_economic+" ,se ha enviado una notificacion para su respectiva aprobacion ");
  		    	    		}
  		    	    		String ser=lst_serv.get(i).toString();
  		    	    		String pro=lst_prod.get(i).toString();
  		    	    		String prec= lst_prec.get(i).toString();
  		    	    		costo_servicios=costo_servicios+ new Cadena().convertirFloat(prec);
	  		    	    	SQL="INSERT INTO corp_economic_detalle (economic,servicio,producto, precio) "+
	  	  		    			"VALUES('"+ cod_economic +"','"+ ser +"','"+ pro +"', '"+prec+"' )";
	  	  		    	    BASE.getBaseDatos().ejecutar(SQL);
  		    	    		sucant=lst_suc1.get(i).toString().trim();
  		    	    	}
	    			}else{
	    				
	    				 OPE="(ACTUALIZAR) ";
	    				 Cadena C=new Cadena();
	  		    	     LinkedList lst_suc1=C.tokens(this.getSucursal(),",");
	  		    	     LinkedList lst_cods=C.tokens(this.getCod_item() ,",");
	  		    	     LinkedList lst_prec=C.tokens(this.getPrecio(),",");
	  		    	     
	  		    	     SQL="UPDATE corp_economic SET status='ACTUALIZADO',usuario_status='"+USUARIO.getUsuario()+"',fecha_status='"+FECHA+"',hora_status='"+HORA+"',obs_status='"+this.getObs()+"',instalacion ='"+ this.getCosto_instalacion().replace(",", ".") +"' "
		  		    	   +" where prospecto='"+ this.getCod_prospecto() +"' and  site='"+ this.getSite() +"' and status in('REGISTRADO','ACTUALIZADO','RECHAZADO' ) ";
		  		    	 BASE.getBaseDatos().ejecutar(SQL);
	  		    	     for(i=0; i<lst_suc1.size();i++){
	  		    	    		String prec= lst_prec.get(i).toString().replace(",",".");
	  		    	    		costo_servicios=costo_servicios+ new Cadena().convertirFloat(prec);
		  		    	    	SQL="UPDATE corp_economic_detalle SET precio='"+ prec+"' where cod='"+ lst_cods.get(i).toString() +"' ";
		  	  		    	    BASE.getBaseDatos().ejecutar(SQL);
		  	  		    	    //sucant=lst_suc1.get(i).toString().trim();
	  		    	     }
	  		    	    SQL="UPDATE corp_sitesurvey SET stx='INGRESAR PRESUPUESTO',usuario_act='"+USUARIO.getUsuario()+"',fecha_act='"+FECHA+"',hora_act='"+HORA+"' where codigo='"+ this.getSite() +"'  ";
	  		    	    BASE.getBaseDatos().ejecutar(SQL);
	  		    	     SQL="Select TOP 1 (P.nombres+' '+P.apellidos) as razon,P.identificacion from prospectos P,corp_economic E where E.codigo='"+ this.getCod_presupuesto() +"' and  E.prospecto=P.codigo ";
	  		    	     Resultado RCS=BASE.getBaseDatos().consultar(SQL);
	  		    	     String razon="",rif= "";
		  		    	   if(RCS.RP){
		  		    	    	razon=RCS.getCadena("razon");
		  		    	    	rif=RCS.getCadena("identificacion");
		  		    	   }
		  		    	   CABECERA="PRESUPUESTO "+rif+" - "+razon+" MODIFICADO POR VENDEDOR";
	  		    	     /**********************ENVIAR CORREO REGISTRO PROSPECTO **********************************************************/
  		  			        MSG_EM = CABECERA+"<br/>CODIGO SITE SURVEY= "+ this.getSite() +"<br/>\n";
  		  					MSG_EM = MSG_EM + "Usuario modifico: "+USUARIO.getDescripcion() +" <br/> \n";
  		  					MSG_EM = MSG_EM + "Observaciones: " + this.getObs() + " <br/>\n";
  		  				    MSG_EM = MSG_EM + "Costo servicios: " + costo_servicios + " <br/>\n";
  		  				    MSG_EM = MSG_EM + "Costo instalacion: " + this.getCosto_instalacion() + " <br/>\n";
  		  					SQL=" INSERT INTO apli_emails (para,cabecera,mensaje) VALUES('" + MPARA + "','"+CABECERA+"','" + MSG_EM + "' ) ";
  		  					BASE.getBaseDatos().ejecutar(SQL);
  		  			     /*************************************FIN DE ENVIO DE CORREO*********************************************************/ 	
	    				this.addActionMessage("Presupuesto(s) actualizado(s) correctamente, se ha enviado la notificacion para su respectiva aprobacion");
	    			}
	    			SQL="INSERT INTO corp_seguimiento_actividades (prospecto,actividad,detalle,obs,usuario,fecha,hora,stx) "+
		    			"VALUES('"+this.getCod_prospecto()+"','9','16','"+OPE+this.getObs() +"','"+ USUARIO.getUsuario() +"','"+ FECHA +"','"+HORA+"','HECHO' )";
		    	        BASE.getBaseDatos().ejecutar(SQL);
		    	        BASE.getBaseDatos().cerrarConexion();
  		    	 return SUCCESS; 	
	    	  }catch(Exception err  ){
				   this.addActionError("Error: "+err.toString() );
			  }  
		   }
		   else
			 this.addActionError("No hay conexion al servidor"); 
	      } 
	     else
		    this.addActionError("La sesion del usuario ha caducado");   	
	    return ERROR;
    }
	
	@SuppressWarnings("rawtypes")
	public String listar(){
		lst_presupuestos=new LinkedList<Presupuesto>();
		  Map session = ActionContext.getContext().getSession();
		    Usuario USUARIO = (Usuario)session.get("ses_usuario");
		    int i=0;  
		    if (USUARIO!=null){	
		    	BASE= new Conectar();
		    	if(BASE.getMsg().equals("SI")){	
		    	    String SQL="select S.codigo,Z.prospecto,CONVERT(varchar(30),S.fecha_status,103) as fecha,s.hora_status as hora,T.identificacion+' - '+T.nombres+' '+T.apellidos as razon,"+
						"S.usuario_status as usuario,V.descripcion as des_vendedor,Z.descripcion as des_sucursal,S.obs_status as obsx "+
						"from prospectos T,corp_economic S,Vendedores V,corp_sucursales Z "+
						"where S.status in('REGISTRADO','ACTUALIZADO' )  and S.usuario_status=V.usuario and S.sucursal=Z.cod and Z.prospecto=T.codigo   "+ 
						"Order by S.fecha_status ASC,S.hora_status ASC";
		    		Resultado RCS=BASE.getBaseDatos().consultar(SQL);
		    		
		    		PWimax pw=new PWimax(BASE.getBaseDatos()); 	
		    		Cadena C=new Cadena();
		    		if(RCS.RP){
		    		   do{
		    			   Presupuesto ITM=new Presupuesto();
		    			   ITM.setId(C.convertirStr(i) );
		    			   String cod_presupuesto=RCS.getCadena("codigo");
		    			   Resultado RCS2=pw.calcularPresupuesto(cod_presupuesto, 8);
		    			   ITM.setCodigo(cod_presupuesto);
		    			   ITM.setFecha(RCS.getCadena("fecha"));
		    			   ITM.setHora(RCS.getCadena("hora"));
		    			   ITM.setProspecto(RCS.getCadena("razon"));
		    			   ITM.setSucursal(RCS.getCadena("obs"));
		    			   ITM.setVendedor(RCS.getCadena("des_vendedor"));
		    			   ITM.setSucursal(RCS.getCadena("des_sucursal"));
		    			   ITM.setObs(RCS.getCadena("obsx"));
		    			   ITM.setDias(RCS2.getCadena("diasr"));
		    			   ITM.setCosto( C.formatearNumero(( RCS2.getDoble("costo_tranzeo")+RCS2.getDoble("costo_comision")+RCS2.getDoble("costo_materiales")) ) );
		    			   
		    			   ITM.setComision(C.formatearNumero(RCS2.getDoble("costo_comision")));
		    			   ITM.setEquipos(C.formatearNumero(RCS2.getDoble("costo_tranzeo")));
		    			   ITM.setMateriales(C.formatearNumero(RCS2.getDoble("costo_materiales")));
		    			   ITM.setInstalacion(C.formatearNumero(RCS2.getDoble("instalacion")));
		    			   ITM.setRecurrente(C.formatearNumero(RCS2.getDoble("recurrente")));
		    			   
		    			   lst_presupuestos.add(ITM);
		    			   i++;
		    			   RCS2.liberar();
		    		   }while(RCS.sigItem());
		    		}
		    	  BASE.getBaseDatos().cerrarConexion();
		    	}
		    }
		  return SUCCESS;
	}
	
	
	@SuppressWarnings("rawtypes")
	public String agregarItemEconomic(){
		  BASE= new Conectar();
		  this.setCod_presupuesto("-1");
		  tabla_eco= new ArrayList<ListaSs>();
		  if(BASE.getMsg().equals("SI")){
			  String SQL="Select S.codigo from corp_sitesurvey S Where S.prospecto='"+ this.getCod_prospecto() +"' and S.stx in('ENVIADO A VENTAS','INGRESAR PRESUPUESTO') ";
				 Resultado RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
					  this.setSite(RCS.getCadena("codigo"));
				  }else{
					  this.setSite("-1"); 
				  }
			  
			  SQL="Select CONVERT(varchar(30),S.fecha_status,103)+' '+S.hora_status as fecha_stx,S.codigo,S.instalacion,S.status as stx,S.obs_status,D.cod,S.sucursal,D.precio,D.servicio,D.producto,P.descripcion as des_prod,X.descripcion as des_serv,Z.descripcion des_suc  "+
						"from corp_economic S,corp_economic_detalle D,corp_productos P,corp_servicios X,corp_sucursales Z "+
						"Where S.site='"+ this.getSite()+"' and S.status in('REGISTRADO','ACTUALIZADO','RECHAZADO' ) and S.codigo=D.economic and D.producto=P.cod and D.servicio=X.cod and S.sucursal=Z.cod  Order by S.sucursal ASC";
				RCS=BASE.getBaseDatos().consultar(SQL);
				  if(RCS.RP){
							  this.setCod_presupuesto( RCS.getCadena("codigo"));
							  this.setFecha_status(RCS.getCadena("fecha_stx"));
							  this.setObs_status(RCS.getCadena("obs_status"));
							  this.setStatus(RCS.getCadena("stx"));
							  LinkedList costox=new Cadena().tokens((new Cadena().convertirStr( RCS.getFloat("instalacion") )),".");
							  if( costox.get(1).toString().equals("0") ){
								  this.setCosto_instalacion( costox.get(0).toString());
							  }else{
								  this.setCosto_instalacion( costox.get(0).toString()+"."+costox.get(1).toString()); 
							  }
							  //this.setCosto_instalacion( new Cadena().convertirStr(RCS.getFloat("instalacion")).replace(",", ".")  ) ;
							  do{ 
								  ListaSs LST=new ListaSs();
								  LST.setId(new Cadena().convertirStr( tabla_eco.size()+1 ));
								  LST.setCod(  RCS.getCadena("cod")   );
								  LST.setSucursal(RCS.getCadena("sucursal"));
								  LST.setServicio(RCS.getCadena("servicio"));
								  LST.setProducto(RCS.getCadena("producto"));
								  LST.setDes_sucursal(RCS.getCadena("des_suc"));
								  LST.setDes_servicio(RCS.getCadena("des_serv"));
								  LST.setDes_producto(RCS.getCadena("des_prod"));
								  LinkedList precio=new Cadena().tokens((new Cadena().convertirStr( RCS.getFloat("precio") )),".");
								  if( precio.get(1).toString().equals("0") ){
									   LST.setPrecio(precio.get(0).toString());
								  }else{
									   LST.setPrecio(precio.get(0).toString()+"."+precio.get(1).toString()); 
								  }
								  tabla_eco.add(LST);
							  }while(RCS.sigItem()); 
			     }else{
					 SQL="Select S.codigo,S.stx,S.obs,D.cod,D.sucursal,D.servicio,D.producto,P.descripcion as des_prod,X.descripcion as des_serv,Z.descripcion des_suc  "+
						"from corp_sitesurvey S,corp_sitesurvey_detalle D,corp_productos P,corp_servicios X,corp_sucursales Z "+
						"Where S.prospecto='"+ this.getCod_prospecto() +"' and Z.cliente='0' and S.codigo=D.site and D.producto=P.cod and D.servicio=X.cod and D.sucursal=Z.cod Order by D.sucursal ASC ";
						RCS=BASE.getBaseDatos().consultar(SQL);
						  if(RCS.RP){
							  this.setCod_presupuesto("-1");
							  this.setFecha_status(new Fecha().getFecha()+" "+new Fecha().getHoras() );
							  this.setObs_status("NINGUNA");
							  this.setStatus("NO REGISTRADO");
							  this.setCosto_instalacion("4500");
							  do{ 
								  ListaSs LST=new ListaSs();
								  LST.setId(new Cadena().convertirStr( tabla_eco.size()+1 ));
								  LST.setCod(  RCS.getCadena("cod")   );
								  LST.setSucursal(RCS.getCadena("sucursal"));
								  LST.setServicio(RCS.getCadena("servicio"));
								  LST.setProducto(RCS.getCadena("producto"));
								  LST.setDes_sucursal(RCS.getCadena("des_suc"));
								  LST.setDes_servicio(RCS.getCadena("des_serv"));
								  LST.setDes_producto(RCS.getCadena("des_prod"));
								  LST.setPrecio("0");
								  tabla_eco.add(LST);
							  }while(RCS.sigItem()); 
						 } 
			       }
				  BASE.getBaseDatos().cerrarConexion(); 
		    }else{
		    	this.addActionError("No hay conexion al servidor");
		    }
		  return SUCCESS;
	  }
	 
	public List<Listax> getLst_sucursales() {
		return lst_sucursales;
	}
	public void setLst_sucursales(List<Listax> lst_sucursales) {
		this.lst_sucursales = lst_sucursales;
	}
	public List<Listax> getLst_servicios() {
		return lst_servicios;
	}
	public void setLst_servicios(List<Listax> lst_servicios) {
		this.lst_servicios = lst_servicios;
	}
	public List<Listax> getLst_productos() {
		return lst_productos;
	}

	public void setLst_productos(List<Listax> lst_productos) {
		this.lst_productos = lst_productos;
	}
	public String getSucursal() {
		return sucursal;
	}
	public void setSucursal(String sucursal) {
		this.sucursal = sucursal;
	}
	public String getUsuario() {
		return usuario;
	}
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	public String getServicio() {
		return servicio;
	}
	public void setServicio(String servicio) {
		this.servicio = servicio;
	}
	public String getProducto() {
		return producto;
	}
	public void setProducto(String producto) {
		this.producto = producto;
	}
	public String getObs() {
		return obs;
	}
	public void setObs(String obs) {
		this.obs = obs;
	}
	public String getPrecio() {
		return precio;
	}
	public void setPrecio(String precio) {
		this.precio = precio;
	}
	public Conectar getBASE() {
		return BASE;
	}
	public void setBASE(Conectar bASE) {
		BASE = bASE;
	}
	public String getCod_prospecto() {
		return cod_prospecto;
	}
	public void setCod_prospecto(String cod_prospecto) {
		this.cod_prospecto = cod_prospecto;
	}
	public List<Listax> getLst_precios() {
		return lst_precios;
	}
	public void setLst_precios(List<Listax> lst_precios) {
		this.lst_precios = lst_precios;
	}

	public String getCod_presupuesto() {
		return cod_presupuesto;
	}

	public void setCod_presupuesto(String cod_presupuesto) {
		this.cod_presupuesto = cod_presupuesto;
	}

	public LinkedList<Presupuesto> getLst_presupuestos() {
		return lst_presupuestos;
	}

	public void setLst_presupuestos(LinkedList<Presupuesto> lst_presupuestos) {
		this.lst_presupuestos = lst_presupuestos;
	}

	public String getInstalacion() {
		return instalacion;
	}

	public void setInstalacion(String instalacion) {
		this.instalacion = instalacion;
	}

	public String getCosto_instalacion() {
		return costo_instalacion;
	}

	public void setCosto_instalacion(String costo_instalacion) {
		this.costo_instalacion = costo_instalacion;
	}

	public List<ListaSs> getTabla_eco() {
		return tabla_eco;
	}

	public void setTabla_eco(List<ListaSs> tabla_eco) {
		this.tabla_eco = tabla_eco;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getFecha_status() {
		return fecha_status;
	}

	public void setFecha_status(String fecha_status) {
		this.fecha_status = fecha_status;
	}

	public String getObs_status() {
		return obs_status;
	}

	public void setObs_status(String obs_status) {
		this.obs_status = obs_status;
	}

	public String getCod_item() {
		return cod_item;
	}

	public void setCod_item(String cod_item) {
		this.cod_item = cod_item;
	}

	public String getSite() {
		return site;
	}

	public void setSite(String site) {
		this.site = site;
	} 
	
	
	
}


